#include <iostream>
using namespace std;

// int main()
// {
//     int n, m, k = 0;
//     cin >> n >> m >> k;
//     int arr[n];
//     for (int i = 0; i < n; i++)
//     {
//         cin >> arr[i];
//     }
//     int l = 0;
//     int r = -1;
//     int cnt = 0;//子串长度(子串中满足要求的数字的个数)
//     int ans = 0;//子串的种类数
//     for (l = 0; l < n; l++)
//     {
//         while (l > r || (r + 1 <= n && cnt < k))
//         {
//             cnt += (arr[++r] >= m);//如果当前这个数满足条件那么长度就要加上1
//         }
//         if (cnt >= k)
//         {
//             ans += n - r;//一旦发现满足了个数,那么后序再放也不会影响,这个种类数类推就是到终点为止.
//         }
//         cnt -= (arr[l] >= m);//如果左移动不影响则减去0,影响了则减去1
//     }
//     cout << ans << endl;
//     return 0;
// }


//视频的代码
// const int N = 2e5 + 9;
// int a[N];
// int main()
// {
//     int n, m, k = 0;
//     cin >> n >> m >> k;
//     for (int i = 1; i <= n; i++)
//     {
//         cin >> a[i];
//     }
//     int ans = 0;
//     for (int i = 1, j = 0, cnt = 0; i <= n; ++ i)
//     { 
//         while (i > j || (j + 1 <= n) && cnt < k)
//         {
//             cnt += (a[++j] >= m);
//         }
//         if (cnt >= k)
//             ans += n - j + 1;
//         cnt -= (a[i] >= m);//判断左移动是否影响个数
//     }
//     cout << ans << endl;
//     return 0;
// }

//我根据其思想写的代码
int main()
{
    int n, m, k;
    cin >> n >> m >> k;
    int arr[n];//储存输入的数字
    for (int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
    int l = 0;
    int r = -1;
    int cnt = 0;//子串长度
    int ans = 0;//子串种类数
    for (l = 0; l < n; l++)
    { 
        while (l > r || (cnt < k && r + 1 <= n))
        {
            r++;
            cnt += (arr[r] >= m);
        }
        if (cnt >= k)
        {
            ans += n - r;//由于索引不同,此处不用-1
        }
        cnt -= arr[l] >= m;//根据左移的影响来确定是否需要更改长度
    }
    cout << ans << endl;
}